ট্রানজেকশন আইসোলেশন লেভেল (Transaction Isolation Levels) হল একটি ডেটাবেজের ট্রানজেকশন সিস্টেমের এমন একটি বৈশিষ্ট্য, যা নির্ধারণ করে একাধিক ট্রানজেকশন একসাথে চালানোর সময়, কীভাবে তাদের মধ্যে ডেটার একে অপরের উপর প্রভাব ফেলবে। এটি মূলত ডেটার সঠিকতা এবং ধারাবাহিকতা নিশ্চিত করতে ব্যবহৃত হয়, বিশেষ করে একাধিক ট্রানজেকশন একই সময়ে সম্পাদিত হলে।
ডেটাবেজ সিস্টেমে সাধারণত ৪টি প্রধান ট্রানজেকশন আইসোলেশন লেভেল রয়েছে:
১. READ UNCOMMITTED
এটি সবচেয়ে নিম্ন স্তরের আইসোলেশন লেভেল। এই লেভেলে একটি ট্রানজেকশন অন্য ট্রানজেকশনের অকমিটেড (committed না হওয়া) ডেটা পড়তে পারে, যা "ডার্টি রিড" (dirty read) হিসেবে পরিচিত। এর মানে, একটি ট্রানজেকশন অন্য ট্রানজেকশন দ্বারা পরিবর্তিত হওয়া ডেটা অ্যাক্সেস করতে পারে, যদিও সেই পরিবর্তন শেষ হয়নি বা কমিট হয়নি।
সুবিধা:
- পারফরম্যান্স বৃদ্ধি: এই লেভেলে সবচেয়ে কম আইসোলেশন, তাই দ্রুত পারফরম্যান্স পাওয়া যায়।
অসুবিধা:
- ডেটা অসঙ্গতি: এটি ডেটা অসম্পূর্ণ বা ভুল হতে পারে, কারণ অকমিটেড ডেটা পড়া হচ্ছে।
২. READ COMMITTED
এই আইসোলেশন লেভেলে একটি ট্রানজেকশন শুধুমাত্র অন্য ট্রানজেকশনের কমিটেড (committed) ডেটা পড়তে পারে। অর্থাৎ, একটি ট্রানজেকশন সম্পূর্ণভাবে শেষ না হওয়া পর্যন্ত অন্য ট্রানজেকশন তার পরিবর্তিত ডেটা পড়তে পারে না। এটি "ফ্যান্টম রিড" (phantom read) এবং "ডার্টি রিড" (dirty read) থেকে রক্ষা করে।
সুবিধা:
- ডেটার সঠিকতা: অকমিটেড ডেটা থেকে সুরক্ষা পাওয়া যায়।
অসুবিধা:
- নম্বর পরিবর্তন হতে পারে: অন্য ট্রানজেকশন চলাকালে নতুন ডেটা ইন্সার্ট বা আপডেট করা হতে পারে, যা ফ্যান্টম রিড তৈরি করতে পারে।
৩. REPEATABLE READ
এই আইসোলেশন লেভেলে একটি ট্রানজেকশন যখন কোনো ডেটা পড়ে, তখন সে ডেটার মান শেষ ট্রানজেকশনের মধ্যে স্থির থাকবে। এতে "ফ্যান্টম রিড" সমস্যা কমে যায়, কিন্তু কিছু ক্ষেত্রে "ফ্যান্টম রেকর্ড" (phantom record) তৈরি হতে পারে।
সুবিধা:
- স্ট্যাবল ডেটা: যে ডেটা একবার পড়া হয়েছে, তা পরবর্তী সময়ে একই থাকবে।
অসুবিধা:
- ফ্যান্টম রেকর্ড: নতুন রেকর্ড যুক্ত বা মুছে ফেলা হলে, তা পরবর্তী রিডে দেখানো না হতে পারে।
৪. SERIALIZABLE
এটি সবচেয়ে শক্তিশালী এবং সর্বোচ্চ আইসোলেশন লেভেল। এই লেভেলে, সমস্ত ট্রানজেকশন সম্পূর্ণভাবে একে অপরের থেকে আলাদা এবং একে অপরের উপর কোনো প্রভাব ফেলতে পারে না। অর্থাৎ, একে অপরের সঙ্গে serially (একটির পর একটি) সম্পাদিত হবে। এতে কোনো ধরনের "ডার্টি রিড", "নন-রিপিটেবল রিড", বা "ফ্যান্টম রিড" সমস্যা থাকে না।
সুবিধা:
- অত্যন্ত সঠিক ডেটা: কোনো ধরনের কনক্যারেন্টি সমস্যা হয় না।
অসুবিধা:
- পারফরম্যান্স হ্রাস: অধিক আইসোলেশন এবং লকিংয়ের কারণে পারফরম্যান্স কমে যেতে পারে, কারণ একাধিক ট্রানজেকশন একে অপরের জন্য অপেক্ষা করতে পারে।
সারাংশ
- READ UNCOMMITTED: সবচেয়ে কম আইসোলেশন, দ্রুত পারফরম্যান্স, কিন্তু ডেটা অসঙ্গতির ঝুঁকি।
- READ COMMITTED: শুধুমাত্র কমিটেড ডেটা পড়া হয়, কম সমস্যা, তবে ফ্যান্টম রিড হতে পারে।
- REPEATABLE READ: ডেটার সঠিকতা বজায় রাখা হয়, তবে ফ্যান্টম রেকর্ড সমস্যা হতে পারে।
- SERIALIZABLE: সবচেয়ে শক্তিশালী আইসোলেশন, সর্বোচ্চ ডেটা সঠিকতা, তবে পারফরম্যান্স কমে যেতে পারে।
সিদ্ধান্ত
প্রতিটি আইসোলেশন লেভেলের সুবিধা এবং অসুবিধা আছে। আপনার প্রয়োজনে কোন আইসোলেশন লেভেল ব্যবহার করবেন তা নির্ভর করবে আপনার অ্যাপ্লিকেশন এবং ডেটাবেজের কাজের ধরন ও পারফরম্যান্সের প্রয়োজনের উপর।
Read more